package cn.tpshion.shop.interceptor;

import cn.dev33.satoken.fun.SaParamFunction;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import cn.tpshion.shop.common.BaseConstant;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

@Component
public class SaTokenInterceptor extends SaInterceptor implements InitializingBean {

    @Override
    public void afterPropertiesSet() throws Exception {
        this.auth = handleAuth();
    }

    private SaParamFunction<Object> handleAuth() {
        return handler ->
            // 指定一条 match 规则
            SaRouter.match("/**")
                // 排除掉的 path 列表，可以写多个
                .notMatch(BaseConstant.EXCLUDE_PATH_PATTERNS)
                // 要执行的校验动作，可以写完整的 lambda 表达式
                .check(r -> StpUtil.checkLogin());
    }
}
